package com.risk.management.controller;

import com.risk.management.dto.Result;
import com.risk.management.entity.User;
import com.risk.management.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 认证控制器
 */
@Controller
public class AuthController {
    
    private static final Logger logger = LoggerFactory.getLogger(AuthController.class);

    @Autowired
    private UserService userService;

    /**
     * 登录页面
     */
    @GetMapping("/login")
    public String login() {
        return "login";
    }

    /**
     * 注册页面
     */
    @GetMapping("/register")
    public String register() {
        return "register";
    }
    
    /**
     * 测试注册页面
     */
    @GetMapping("/test-register")
    public String testRegister() {
        return "test-register";
    }

    /**
     * 注册用户
     */
    @PostMapping(value = "/register", produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public Result<Void> registerUser(@RequestBody User user) {
        try {
            logger.info("接收注册请求: username={}, role={}", user.getUsername(), user.getRole());
            
            // 基本参数验证
            if (user.getUsername() == null || user.getUsername().trim().isEmpty()) {
                return Result.error("用户名不能为空");
            }
            
            if (user.getPassword() == null || user.getPassword().trim().isEmpty()) {
                return Result.error("密码不能为空");
            }
            
            if (user.getRealName() == null || user.getRealName().trim().isEmpty()) {
                return Result.error("真实姓名不能为空");
            }
            
            // 调用服务进行用户注册
            boolean success = userService.addUser(user);
            if (success) {
                logger.info("用户 {} 注册成功", user.getUsername());
                return Result.success();
            } else {
                logger.warn("用户 {} 注册失败", user.getUsername());
                return Result.error("注册失败，用户名可能已存在");
            }
        } catch (Exception e) {
            logger.error("注册过程中发生异常", e);
            return Result.error("系统错误，请稍后再试");
        }
    }

    /**
     * 官网首页
     */
    @GetMapping({"/", "/home"})
    public String home() {
        logger.info("加载官网首页");
        return "home";
    }
    
    /**
     * 系统首页(需登录)，重定向到dashboard
     */
    @GetMapping("/index")
    public String index() {
        return "redirect:/dashboard";
    }
    
    /**
     * 风险管理系统根路径
     */
    @GetMapping("/risk-management")
    public String riskManagement() {
        logger.info("加载风险管理系统首页");
        return "home";
    }
    
    /**
     * 风险管理系统根路径
     */
    @GetMapping("/risk-management/")
    public String riskManagementRoot() {
        logger.info("加载风险管理系统根路径首页");
        return "home";
    }
    
    /**
     * 风险管理系统dashboard路径重定向
     */
    @GetMapping("/risk-management/dashboard")
    public String riskManagementDashboard() {
        logger.info("重定向到系统dashboard");
        return "redirect:/dashboard";
    }
} 